<?php 

/**
 * \file
 * Classe pour la gestion de l'authentification.
 */

namespace pilar\AuthenticationManager /* \cond */ ; /* \endcond */
{

/**
 * Gestionnaire de l'authentification.
 *
 * \since 01/07/2009
 * \author Dirk Marski <dirk.marski@gmail.com>
 */
class AuthenticationManager extends \pilar\Configurables\Configurable {


/**
 * Objet / classe d'authentification.
 */
private $_authObject = null;


public function loadDefaultParams() {
 parent::loadDefaultParams();

 $this->defineParams(array(
  'authenticationClass' => PILAR_AUTHENTICATION_CLASS,
  'authenticationObjectParams' => array(),
  'sessionManager' => null
 ));
}


protected function initialize() {
	eval ('$this->_authObject = new '.$this->param('authenticationClass')
	 .'(array(
	  \'authenticationObjectParams\' => $this->param(\'authenticationObjectParams\'),
	  \'sessionManager\' => $this->param(\'sessionManager\')
	 ));');
}


/**
 * Vérifie un utilisateur à partir de son login et son mot de passe.
 * 
 * \param $login Login de l'utilisateur.
 * \return \c TRUE si un utilisateur existe dans la session, \c FALSE sinon.
 * \param $pwd Mot de passe.
 */
public function checkUser() {
	if ($this->param('sessionManager')->getVar('pilar_userId') == null) {
		// On force l'authentification
		if (PILAR_FORCE_AUTHENTICATION) {
		 $this->_authObject->authenticate();
		} else {
			return false;
		}
	}
	
	return true;
}


/**
 * Retourne l'identifiant de l'utilisateur authentifié.
 * 
 * \return Identifiant numérique de l'utilisateur.
 * \since 08/07/2009
 */
public function getUserId() {
	return $this->param('sessionManager')->getVar('pilar_userId');
}


/**
 * Fonction pour vérifier l'autorisation d'un utilisateur et le logger.
 * 
 * \param $userId Identifiant de l'utilisateur.
 * \param $pwd Mot de passe de l'utilisateur.
 * \since 06/07/2009
 */
public function authenticateUser($userId, $pwd = null) {
	$this->_authObject->authenticate($userId, $pwd);
}


} // Class.

} // Namespace.
